package com.lj.back.manage.scaffold.module.sys.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lj.back.manage.scaffold.module.sys.DO.SysMenuDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Set;

/**
 * @author lv
 * @version 1.0.0
 */
@Repository
@Mapper
public interface SysMenuDao extends BaseMapper<SysMenuDO> {

    /**
     * 根据角色查询菜单列表
     * @param roleId 角色ID
     * @return 菜单列表
     */
    Set<SysMenuDO> selectMenuByRole(@NotNull(message = "{role.id.notnull}") Long roleId);

    /**
     * 新增或者更新菜单权限信息
     * @param id
     * @param permIds
     * @return
     */
    int replaceInto(@NotNull(message = "{menu.id.notnull}") @Param("menuId") Long id,
                    @NotEmpty(message = "{menu.permIds.notnull}") @Param("permIds") Set<Long> permIds);

    /**
     * 根据菜单列表删除角色菜单关联关系
     * @param menuIds
     * @return
     */
    int deleteRoleMenuByMenuIds(@NotEmpty(message = "{menu.childrenMenuIds.notnull}") @Param("menuIds") Set<Long> menuIds);

    /**
     * 根据菜单列表删除菜单权限关联关系
     * @param menuIds
     * @return
     */
    int deleteMenuPermByMenuIds(@NotEmpty(message = "{menu.childrenMenuIds.notnull}") @Param("menuIds") Set<Long> menuIds);
}
